import request from '@/http/http'

//获取部门列表参数接口
export interface DepartmentListParams {
    DepartmentName?: string  // 可选参数
    pageIndex: number  // 页码
    pageSize: number   // 每页大小
}

// 部门列表项类型
export interface DepartmentItem {
    DeptId: number
    DepartmentName: string
    Status: boolean
    MemberCount: number
    Description: string
    ManagerId: number
    ParentId: number
    UpdateTime?: string  // 更新时间
}

// 部门列表响应数据结构
export interface DepartmentListData {
    TotalCount: number
    TotalPage: number
    Data: DepartmentItem[]
}

// 新增部门请求参数接口
export interface AddDepartmentParams {
    DepartmentName: string     // 部门名称
    ManagerId: number | null   // 管理者ID
    Description: string        // 部门描述
    ParentId: number           // 父部门ID
}

// 更新部门请求参数接口
export interface UpdateDepartmentParams {
    DeptId: number             // 部门ID
    DepartmentName: string     // 部门名称
    ManagerId: number | null   // 管理者ID
    Description: string        // 部门描述
    ParentId: number           // 父部门ID
}

// 获取部门列表
export const getDepartmentList = async (params: DepartmentListParams) => {
    // 这里使用真实API路径
    console.log(`调用获取部门列表API: Depratment/GetDepartmentList，参数:`, params);

    // 实际API调用代码
    return request({
        url: 'BaseDataReadAPI/Depratment/GetDepartmentList',
        method: 'GET',
        params
    })
}

// 添加部门
export const addDepartment = async (data: AddDepartmentParams) => {
    // 这里使用真实API路径
    console.log(`调用添加部门API: Depratment/AddDepartment，参数:`, data);

    // 实际API调用代码
    return request({
        url: 'BaseDataWriteAPI/Depratment/AddDepartment',
        method: 'POST',
        data
    })
}

// 更新部门
export const updateDepartment = async (data: UpdateDepartmentParams) => {
    // 这里使用真实API路径
    console.log(`调用更新部门API: Depratment/UpdateDepartment，参数:`, data);

    // 实际API调用代码
    return request({
        url: 'BaseDataWriteAPI/Depratment/UpdateDepartment',
        method: 'PUT',
        data
    })
}

// 删除部门
export const deleteDepartment = async (deptId: number) => {
    // 这里使用真实API路径
    console.log(`调用删除API: Depratment/DeleteDepartment，参数: deptId=${deptId}`);

    // 实际API调用代码
    return request({
        url: 'BaseDataWriteAPI/Depratment/DeleteDepartment',
        method: 'DELETE',
        params: { deptId }
    })
}

// 设置部门状态参数接口
export interface SetDepartmentStatusParams {
    DeptId: number    // 部门ID
    Status: boolean   // 是否启用
}

// 设置部门状态
export const setDepartmentStatus = async (data: SetDepartmentStatusParams) => {
    // 这里使用真实API路径
    console.log(`调用设置部门状态API: Depratment/SetDepartmentStatus，参数:`, data);

    // 实际API调用代码
    return request({
        url: 'BaseDataWriteAPI/Depratment/UpdateStateDept',
        method: 'PUT',
        params: {
            deptId: data.DeptId
        }
    })
}

// 部门树中的用户类型
export interface DeptTreeUser {
    UserId: number
    UserName: string
    RealName: string
}

// 部门树角色节点类型
export interface DeptTreeRole {
    DeptId: number
    DepartmentName: string | null
    RoleId: number | null
    RoleName: string | null
    Users: DeptTreeUser[] | null
    Children: DeptTreeRole[] | null
}

// 部门树节点类型
export interface DeptTreeItem {
    DeptId: number
    DepartmentName: string
    RoleId: number | null
    RoleName: string | null
    Users: DeptTreeUser[] | null
    Children: DeptTreeRole[] | null
}

// 获取用户部门树
export const getUserDeptTree = async (data: number) => {
    // 这里使用真实API路径
    console.log(`调用获取用户部门树API: Depratment/GetUserDeptTree`);

    // 实际API调用代码
    return request({
        url: 'BaseDataReadAPI/Depratment/GetUserDeptTree',
        method: 'GET',
        params: {
            ParentId: data
        }
    })
}

// 获取部门树结构
export const getDepartmentTree = async () => {
    // 这里使用真实API路径
    console.log(`调用获取部门树结构API: Depratment/GetDepartmentTree`);

    // 实际API调用代码
    return request({
        url: 'BaseDataReadAPI/Depratment/GetDeptTree',
        method: 'GET'
    })
}

